home *** CD-ROM | disk | FTP | other *** search
/ Total Network Tools 2002 / NextStepPublishing-TotalNetworkTools2002-Win95.iso / Archive / Mail Server / Mdaemon.exe / MDUSERIMPORTS.H < prev    next >
Encoding:
C/C++ Source or Header  |  2000-11-22  |  27.3 KB  |  601 lines

  1. #ifndef __MDUserImports__
  2. #define __MDUserImports__
  3.  
  4. #ifndef _AFXWIN_H_
  5.     #include <windows.h>
  6. #endif
  7.  
  8. typedef void*    MD_HANDLE;
  9. typedef void*    MD_FINDHANDLE;
  10. typedef void*   MD_RULEHANDLE;
  11.  
  12. #define MD_BADHANDLE        (MD_HANDLE)(0xFFFFFFFF)
  13. #define MD_BADRULEHANDLE    (MD_HANDLE)-1
  14. #define MD_BADFINDHANDLE    NULL
  15.  
  16. #define MDUSERDLL_NEWUSER       -1
  17. #define MDUSERDLL_MAXHANDLES    200
  18.  
  19. #define MD_PRECEDENCE_URGENT     10
  20. #define MD_PRECEDENCE_HIGH       25
  21. #define MD_PRECEDENCE_NORMAL     50
  22. #define MD_PRECEDENCE_LOW        75
  23. #define MD_PRECEDENCE_BULK       80
  24. #define MD_PRECEDENCE_RETRY      90
  25.  
  26. #define DOMAIN_LEN                45
  27. #define MAILBOX_LEN                30
  28. #define FULLNAME_LEN            30
  29. #define MAILDIR_LEN                90
  30. #define PASSWORD_LEN            20
  31. #define MAXMESSAGECOUNT_LEN        4
  32. #define MAXDISKSPACE_LEN        6
  33. #define HEADER_LEN              128
  34. #define MATCHTEXT_LEN           128
  35.  
  36. #define MDUSERDLL_MAXMSGTO_LEN      128
  37. #define MDUSERDLL_MAXMSGFROM_LEN    128
  38. #define MDUSERDLL_MAXMSGSUBJECT_LEN 128
  39. #define MDUSERDLL_MAXMSGBODY_LEN    2048
  40.  
  41. #define    EMAIL_LEN                MAILBOX_LEN+DOMAIN_LEN+1
  42.  
  43. #define FWDADDR_LEN                256 // was 128
  44. #define FWDHOST_LEN                64
  45. #define FWDSENDAS_LEN            128
  46. #define FWDPORT_LEN                8
  47.  
  48. #define AUTORESPEXCLUDE_LEN     5001
  49.  
  50. #define USERDEFINED_LEN         256
  51.  
  52. #define MBXFORMAT_LEN            32
  53.  
  54. #define WM_MDUSERDLL_MSG         (WM_USER+900)
  55. #define WM_MDUSERDLL_ADD         WM_MDUSERDLL_MSG+1
  56. #define WM_MDUSERDLL_DELETE      WM_MDUSERDLL_MSG+2
  57. #define WM_MDUSERDLL_CHANGE      WM_MDUSERDLL_MSG+3
  58. #define WM_MDUSERDLL_LOADING     WM_MDUSERDLL_MSG+4
  59. #define WM_MDUSERDLL_ADDSEM      WM_MDUSERDLL_MSG+5
  60. #define WM_MDUSERDLL_DELETESEM   WM_MDUSERDLL_MSG+6
  61. #define WM_MDUSERDLL_CHANGESEM   WM_MDUSERDLL_MSG+7
  62.  
  63. #define MDUSERDLL_ACCESSWORLDCLIENT 0x0001
  64. #define MDUSERDLL_ACCESSWEBCONFIG   0x0002
  65. #define MDUSERDLL_ISADMIN           0x0004
  66. #define MDUSERDLL_EDITFULLNAME      0x0008
  67. #define MDUSERDLL_EDITPASSWORD      0x0010
  68. #define MDUSERDLL_EDITMAILDIR       0x0020
  69. #define MDUSERDLL_EDITFWD           0x0040
  70. #define MDUSERDLL_EDITADVFWD        0x0080
  71. #define MDUSERDLL_EDITENCRYPT       0x0100
  72. #define MDUSERDLL_EDITEVERYONE      0x0200
  73. #define MDUSERDLL_EDITLOCALONLY     0x0400
  74. #define MDUSERDLL_EDITQUOTAS        0x0800
  75. #define MDUSERDLL_EDITMULTIPOP      0x1000
  76. #define MDUSERDLL_EDITAUTORESPONDER 0x2000
  77. #define MDUSERDLL_EDITEMAILCHANGES  0x4000
  78. #define MDUSERDLL_EDITIMAPRULES     0x8000
  79.  
  80. #define MDUSERDLL_WEBCONFIGDEFAULTS "YYNNNYNYNNNNNNYNY"
  81.  
  82. #define MDUSERDLL_VRFYACCOUNT       0x0001
  83. #define MDUSERDLL_VRFYMAILDIR       0x0002
  84. #define MDUSERDLL_VRFYFWD           0x0004
  85. #define MDUSERDLL_VRFYQUOTAS        0x0008
  86. #define MDUSERDLL_VRFYWEBCONFIG     0x0010
  87. #define MDUSERDLL_VRFYOPTIONS       0x0020
  88. #define MDUSERDLL_VRFYMULTIPOP      0x0040
  89. #define MDUSERDLL_VRFYSKIPDURINGADD 0x0080
  90. #define MDUSERDLL_VRFYAUTORESP      0x0100
  91. #define MDUSERDLL_VRFYALL           MDUSERDLL_VRFYACCOUNT | MDUSERDLL_VRFYMAILDIR | \
  92.                                     MDUSERDLL_VRFYFWD | MDUSERDLL_VRFYQUOTAS | \
  93.                                     MDUSERDLL_VRFYWEBCONFIG | MDUSERDLL_VRFYOPTIONS | \
  94.                                     MDUSERDLL_VRFYMULTIPOP | MDUSERDLL_VRFYAUTORESP
  95.  
  96. #define MDUSERDLL_DEFMDAEMONINIDB   "mdaemon.ini"
  97. #define MDUSERDLL_DEFUSERLISTDB     "userlist.dat"
  98. #define MDUSERDLL_DEFCFILTERDB      "cfilter.ini"
  99. #define MDUSERDLL_DEFDOMAINPOPDB    "domainpop.ini"
  100. #define MDUSERDLL_DEFDPOPXTRADB     "dpopxtra.dat"
  101. #define MDUSERDLL_DEFDOMAINDB       "domains.dat"
  102. #define MDUSERDLL_DEFHELPDB         "help.dat"
  103. #define MDUSERDLL_DEFDELWARNDB      "delwarn.dat"
  104. #define MDUSERDLL_DEFDELERRDB       "delerr.dat"
  105. #define MDUSERDLL_DEFRECEIPTDB      "receipt.dat"
  106. #define MDUSERDLL_DEFNOCOMMANDDB    "nocomd.dat"
  107. #define MDUSERDLL_DEFNOSUCHUSERDB   "noshuser.dat"
  108. #define MDUSERDLL_DEFACCTINFODB     "acctinfo.dat"
  109. #define MDUSERDLL_DEFWELCOMEDB      "welcome.dat"
  110. //#define MDUSERDLL_DEFUIDLDB         "uidl.dat"
  111. #define MDUSERDLL_DEFMIMETYPEDB     "mimetype.dat"
  112. #define MDUSERDLL_DEFALIASDB        "alias.dat"
  113. #define MDUSERDLL_DEFTRANSLATEDB    "translat.dat"
  114. #define MDUSERDLL_DEFTRANSEXCPTDB   "trexcept.dat"
  115. #define MDUSERDLL_DEFWEBACCESSDB    "webacces.dat"
  116. #define MDUSERDLL_DEFRFC822TMPDB    "rfc822.mbf"
  117. #define MDUSERDLL_DEFDIGESTTMPDB    "digest.mbf"
  118. #define MDUSERDLL_DEFIPSHIELDDB     "ipshield.dat"
  119. #define MDUSERDLL_DEFFWDDB          "forward.dat"
  120. #define MDUSERDLL_DEFSIGDB          "signatur.dat"
  121. #define MDUSERDLL_DEFMAILFORMATDB   "formats.dat"
  122. #define MDUSERDLL_DEFAUTORESPDB     "autoresp.dat"
  123. #define MDUSERDLL_DEFGATEWAYDB      "gateways.dat"
  124. #define MDUSERDLL_DEFREFUSALDB      "refusal.rsp"
  125. #define MDUSERDLL_DEFLOCALONLYDB    "loconly.rsp"
  126. #define MDUSERDLL_DEFMULTIPOPDB     "multipop.dat"
  127. #define MDUSERDLL_DEFIPCACHEDB      "ipcache.dat"
  128. #define MDUSERDLL_DEFMXCACHEDB      "mxcache.dat"
  129. #define MDUSERDLL_DEFNOCACHEDB      "nocache.dat"
  130. #define MDUSERDLL_DEFPRIORITYDB     "priority.dat"
  131. #define MDUSERDLL_DEFEXCEPTIONDB    "excption.dat"
  132. #define MDUSERDLL_DEFDELUNLESSDB    "dlunless.dat"
  133. #define MDUSERDLL_DEFFWDUNLESSDB    "fwunless.dat"
  134. #define MDUSERDLL_DEFDVUNLESSDB     "dvunless.dat"
  135. #define MDUSERDLL_DEFMSGIDDB        "msgid.dat"
  136. #define MDUSERDLL_DEFLANDOMAINDB    "lndomain.dat"
  137. #define MDUSERDLL_DEFIPSCREENDB     "ipscreen.dat"
  138. #define MDUSERDLL_DEFRELAYDB        "relay.dat"
  139. #define MDUSERDLL_DEFAUTHDB         "authlst.dat"
  140. #define MDUSERDLL_DEFSPAMBLOCKERDB  "spamblck.dat"
  141. #define MDUSERDLL_DEFSPAMCACHEDB    "spamcach.dat"
  142. #define MDUSERDLL_DEFSPAMEXCEPTDB   "spamxcpt.dat"
  143. #define MDUSERDLL_DEFSCHEDULEDB     "schedule.dat"
  144. #define MDUSERDLL_DEFLDAPDB            "ldap.dat"
  145. #define MDUSERDLL_DEFPOLICYDB       "policy.dat"
  146. #define MDUSERDLL_DEFVARIABLEDB     "vars.dat"
  147. #define MDUSERDLL_DEFQCOUNTSDB      "qcounts.dat"
  148. #define MDUSERDLL_DEFMAILFORMAT     "RFC822" // DON'T ADD ".MBF" to this!!
  149.  
  150. #define MDUSERDLL_DOMAINDB            1
  151. #define MDUSERDLL_HELPDB            2
  152. #define MDUSERDLL_DELWARNDB            3
  153. #define MDUSERDLL_DELERRDB            4
  154. #define MDUSERDLL_RECEIPTDB            5
  155. #define MDUSERDLL_NOCOMMANDDB        6
  156. #define MDUSERDLL_NOSUCHUSERDB        7
  157. #define MDUSERDLL_ACCTINFODB        8
  158. #define MDUSERDLL_WELCOMEDB            9
  159. //#define MDUSERDLL_UIDLDB            10
  160. #define MDUSERDLL_MIMETYPEDB        11
  161. #define MDUSERDLL_ALIASDB            12
  162. #define MDUSERDLL_TRANSLATEDB        13
  163. #define MDUSERDLL_TRANSEXCPTDB        14
  164. #define MDUSERDLL_WEBACCESSDB        15
  165. #define MDUSERDLL_RFC822TMPDB        16
  166. #define MDUSERDLL_DIGESTTMPDB        17
  167. #define MDUSERDLL_IPSHIELDDB        18
  168. #define MDUSERDLL_FWDDB                19
  169. #define MDUSERDLL_SIGDB                20
  170. #define MDUSERDLL_MAILFORMATDB        21
  171. #define MDUSERDLL_AUTORESPDB        22
  172. #define MDUSERDLL_GATEWAYDB            23
  173. #define MDUSERDLL_REFUSALDB            24
  174. #define MDUSERDLL_LOCALONLYDB        25
  175. #define MDUSERDLL_MULTIPOPDB        26
  176. #define MDUSERDLL_IPCACHEDB            27
  177. #define MDUSERDLL_MXCACHEDB            28
  178. #define MDUSERDLL_NOCACHEDB            29
  179. #define MDUSERDLL_PRIORITYDB        30
  180. #define MDUSERDLL_EXCEPTIONDB        31
  181. #define MDUSERDLL_DELUNLESSDB        32
  182. #define MDUSERDLL_FWDUNLESSDB        33
  183. #define MDUSERDLL_DVUNLESSDB        34
  184. #define MDUSERDLL_MSGIDDB            35
  185. #define MDUSERDLL_LANDOMAINDB        36
  186. #define MDUSERDLL_IPSCREENDB        37
  187. #define MDUSERDLL_RELAYDB            38
  188. #define MDUSERDLL_AUTHDB            39
  189. #define MDUSERDLL_USERLISTDB        40
  190. #define MDUSERDLL_DOMAINPOPDB        41
  191. #define MDUSERDLL_MDAEMONINIDB        42
  192. #define MDUSERDLL_SPAMBLOCKERDB     43
  193. #define MDUSERDLL_SPAMEXCEPTDB        44
  194. #define MDUSERDLL_SPAMCACHEDB        45
  195. #define MDUSERDLL_LDAPDB            46
  196. #define MDUSERDLL_SCHEDULEDB        47
  197. #define MDUSERDLL_CFILTERDB            48
  198. #define MDUSERDLL_POLICYDB          49
  199. #define MDUSERDLL_DPOPXTRADB        50
  200. #define MDUSERDLL_VARIABLEDB        51
  201. #define MDUSERDLL_QCOUNTSDB         52
  202.  
  203. #define MDUSERDLL_DUSERLISTDB        0x0001 
  204. #define MDUSERDLL_DAUTORESPDB        0x0002
  205. #define MDUSERDLL_DFWDDB            0x0004
  206. #define MDUSERDLL_DMAILFORMATDB        0x0008
  207. #define MDUSERDLL_DWEBACCESSDB        0x0010
  208. #define MDUSERDLL_DMULTIPOPDB        0x0020
  209. #define MDUSERDLL_DALIASDB            0x0040
  210. #define MDUSERDLL_DREMOVEDIR        0x0080
  211. #define MDUSERDLL_DDELETEALL        MDUSERDLL_DUSERLISTDB | MDUSERDLL_DAUTORESPDB | \
  212.                                     MDUSERDLL_DFWDDB | MDUSERDLL_DMAILFORMATDB | \
  213.                                     MDUSERDLL_DWEBACCESSDB | MDUSERDLL_DMULTIPOPDB | \
  214.                                     MDUSERDLL_DALIASDB | MDUSERDLL_DREMOVEDIR
  215.  
  216. #define MD_GetAccessWorldClient(i)   MD_GetWebConfigBit(i, MDUSERDLL_ACCESSWORLDCLIENT)
  217. #define MD_GetAccessWebConfig(i)     MD_GetWebConfigBit(i, MDUSERDLL_ACCESSWEBCONFIG)
  218. #define MD_GetIsAdmin(i)             MD_GetWebConfigBit(i, MDUSERDLL_ISADMIN)
  219. #define MD_GetEditFullName(i)        MD_GetWebConfigBit(i, MDUSERDLL_EDITFULLNAME)
  220. #define MD_GetEditPassword(i)        MD_GetWebConfigBit(i, MDUSERDLL_EDITPASSWORD)
  221. #define MD_GetEditMailDir(i)         MD_GetWebConfigBit(i, MDUSERDLL_EDITMAILDIR)
  222. #define MD_GetEditFwd(i)             MD_GetWebConfigBit(i, MDUSERDLL_EDITFWD)
  223. #define MD_GetEditAdvFwd(i)          MD_GetWebConfigBit(i, MDUSERDLL_EDITADVFWD)
  224. #define MD_GetEditEncrypt(i)         MD_GetWebConfigBit(i, MDUSERDLL_EDITENCRYPT)
  225. #define MD_GetEditEveryone(i)        MD_GetWebConfigBit(i, MDUSERDLL_EDITEVERYONE)
  226. #define MD_GetEditLocalOnly(i)       MD_GetWebConfigBit(i, MDUSERDLL_EDITLOCALONLY)
  227. #define MD_GetEditQuotas(i)          MD_GetWebConfigBit(i, MDUSERDLL_EDITQUOTAS)
  228. #define MD_GetEditMultiPOP(i)        MD_GetWebConfigBit(i, MDUSERDLL_EDITMULTIPOP)
  229. #define MD_GetEditAutoResponder(i)   MD_GetWebConfigBit(i, MDUSERDLL_EDITAUTORESPONDER)
  230. #define MD_GetEditEmailChanges(i)    MD_GetWebConfigBit(i, MDUSERDLL_EDITEMAILCHANGES)
  231.  
  232. #define MD_SetAccessWorldClient(i,v) MD_SetWebConfigBit(i, MDUSERDLL_ACCESSWORLDCLIENT, v)
  233. #define MD_SetAccessWebConfig(i,v)   MD_SetWebConfigBit(i, MDUSERDLL_ACCESSWEBCONFIG, v)
  234. #define MD_SetIsAdmin(i,v)           MD_SetWebConfigBit(i, MDUSERDLL_ISADMIN, v)
  235. #define MD_SetEditFullName(i,v)      MD_SetWebConfigBit(i, MDUSERDLL_EDITFULLNAME, v)
  236. #define MD_SetEditPassword(i,v)      MD_SetWebConfigBit(i, MDUSERDLL_EDITPASSWORD, v)
  237. #define MD_SetEditMailDir(i,v)       MD_SetWebConfigBit(i, MDUSERDLL_EDITMAILDIR, v)
  238. #define MD_SetEditFwd(i,v)           MD_SetWebConfigBit(i, MDUSERDLL_EDITFWD, v)
  239. #define MD_SetEditAdvFwd(i,v)        MD_SetWebConfigBit(i, MDUSERDLL_EDITADVFWD, v)
  240. #define MD_SetEditEncrypt(i,v)       MD_SetWebConfigBit(i, MDUSERDLL_EDITENCRYPT, v)
  241. #define MD_SetEditEveryone(i,v)      MD_SetWebConfigBit(i, MDUSERDLL_EDITEVERYONE, v)
  242. #define MD_SetEditLocalOnly(i,v)     MD_SetWebConfigBit(i, MDUSERDLL_EDITLOCALONLY, v)
  243. #define MD_SetEditQuotas(i,v)        MD_SetWebConfigBit(i, MDUSERDLL_EDITQUOTAS, v)
  244. #define MD_SetEditMultiPOP(i,v)      MD_SetWebConfigBit(i, MDUSERDLL_EDITMULTIPOP, v)
  245. #define MD_SetEditAutoResponder(i,v) MD_SetWebConfigBit(i, MDUSERDLL_EDITAUTORESPONDER, v)
  246. #define MD_SetEditEmailChanges(i,v)  MD_SetWebConfigBit(i, MDUSERDLL_EDITEMAILCHANGES, v)
  247.  
  248. #define MDDLLERR_NOTFOUND               -1
  249. #define MDDLLERR_BASE                    (WM_USER+300)
  250. #define MDDLLERR_LDAP_BASE                1600
  251. #define MDDLLERR_NOERROR                               0   // no errors with MD_UserInfo structure found
  252. #define    MDDLLERR_MBXHASDOMAIN           (MDDLLERR_BASE+0)  // mailbox value contains a domain name
  253. #define MDDLLERR_USEREXISTS                (MDDLLERR_BASE+1)  // mailbox and/or real name is already in use
  254. #define    MDDLLERR_INVALIDFULLNAME        (MDDLLERR_BASE+2)  // real name is missing/invalid
  255. #define MDDLLERR_INVALIDMAILBOX         (MDDLLERR_BASE+3)  // mailbox is missing/invalid
  256. #define MDDLLERR_INVALIDMAILDIR         (MDDLLERR_BASE+4)  // mail directory missing/invalid
  257. #define MDDLLERR_INVALIDPASSWORD        (MDDLLERR_BASE+5)  // password is missing/invalid/too long
  258. #define MDDLLERR_INVALIDFWD             (MDDLLERR_BASE+6)  // forwarding address data missing/invalid
  259. #define MDDLLERR_POSTMASTER             (MDDLLERR_BASE+7)  // postmaster must be an alias
  260. #define MDDLLERR_LOGONINUSE                (MDDLLERR_BASE+8)  // pop logon value already in use
  261. #define MDDLLERR_INVALIDCNTQUOTA        (MDDLLERR_BASE+9)  // count quota missing/invalid
  262. #define MDDLLERR_INVALIDDISKQUOTA        (MDDLLERR_BASE+10) // disk quota missing/invalid
  263. #define MDDLLERR_CANTCREATEMAILDIR        (MDDLLERR_BASE+12) // can't create the mail folder
  264. #define MDDLLERR_CANTCREATEFILEDIR        (MDDLLERR_BASE+13) // can't create the file folder
  265. #define MDDLLERR_TOOMANYACCOUNTS        (MDDLLERR_BASE+14) // license size has been reached
  266. #define MDDLLERR_INVALIDRECORD          (MDDLLERR_BASE+15) // MD_UserRecord is invalid 
  267.  
  268. #define MDDLLERR_MISSINGTO                (MDDLLERR_BASE+16) // MD_MessageInfo has no TO value
  269. #define MDDLLERR_MISSINGFROM            (MDDLLERR_BASE+17) // MD_MessageInfo has no FROM value
  270. #define MDDLLERR_MISSINGBODY            (MDDLLERR_BASE+18) // MD_MessageInfo has no BODY
  271. #define MDDLLERR_MISSINGBODYFILE        (MDDLLERR_BASE+19) // MD_MessageInfo specified body file which doesn't exist
  272. #define MDDLLERR_MISSINGATTACHMENTFILE    (MDDLLERR_BASE+20) // MD_MessageInfo specified attachment file which doesn't exist
  273. #define MDDLLERR_MISSINGRAWPATH         (MDDLLERR_BASE+21) // Raw file directory was not present in MDaemon.ini file
  274. #define MDDLLERR_CANTGENRAWFILENAME     (MDDLLERR_BASE+22) // Can't generate a new raw file name GetLastErr() will say why.
  275. #define MDDLLERR_CANTLOCKRAWFILE        (MDDLLERR_BASE+23) // The raw lock file could not be created
  276. #define MDDLLERR_CANTCREATERAWFILE      (MDDLLERR_BASE+24) // Can't create the RAW message file.
  277. #define MDDLLERR_CANTACCESSBODYFILE     (MDDLLERR_BASE+25) // The body file could not be opened
  278.  
  279. #define LDAP_ADDRBOOKDISABLED            0x100
  280. #define LDAP_DLLERROR                    0x101
  281. #define LDAP_ACCOUNTHIDDEN                0x102
  282.  
  283. #ifndef __RESOURCE__
  284.  
  285. #ifdef __BORLANDC__
  286.     #pragma option -a8
  287. #else
  288.   #pragma pack(push, 8)
  289. #endif
  290.  
  291. struct MD_UserInfo
  292. {
  293.     char Email[EMAIL_LEN+1];
  294.     char Mailbox[MAILBOX_LEN+1];
  295.     char Domain[DOMAIN_LEN+1];
  296.     char FullName[FULLNAME_LEN+1];
  297.     char MailDir[MAILDIR_LEN+1];
  298.     char Password[PASSWORD_LEN+1];
  299.     bool AutoDecode;
  300.     bool IsForwarding;
  301.     bool AllowAccess;
  302.     bool AllowChangeViaEmail;
  303.     bool KeepForwardedMail;
  304.     bool HideFromEveryone;
  305.     bool EncryptMail;
  306.     bool ApplyQuotas;
  307.     bool EnableMultiPOP;
  308.     bool LocalOnly;
  309.     long MaxMessageCount;
  310.     long MaxDiskSpace;
  311.  
  312.     int  WebConfig;
  313.  
  314.     char FwdAddress[FWDADDR_LEN+1];
  315.     char FwdHost[FWDHOST_LEN+1];
  316.     char FwdSendAs[FWDSENDAS_LEN+1];
  317.     char FwdPort[FWDPORT_LEN+1];
  318.     char NTAccount[MAILBOX_LEN+1];
  319.     char MailFormat[MBXFORMAT_LEN+1];
  320.  
  321.     char AutoRespScript[MAX_PATH+1];
  322.     char AutoRespProcess[MAX_PATH+1];
  323.     char AutoRespExclude[AUTORESPEXCLUDE_LEN+1];
  324.     char AddToList[EMAIL_LEN+1];
  325.     char RemoveFromList[EMAIL_LEN+1];
  326.     bool PassMessageToProcess;
  327.  
  328.     long MaxUIDLCount;
  329.     long MaxMessageSize;
  330.  
  331.     char UserDefined[USERDEFINED_LEN+1];
  332. };
  333.  
  334. struct MD_MessageInfo
  335. {
  336.     char To[MDUSERDLL_MAXMSGTO_LEN+1];
  337.     char From[MDUSERDLL_MAXMSGFROM_LEN+1];
  338.     char Subject[MDUSERDLL_MAXMSGSUBJECT_LEN+1];
  339.  
  340.     char MessageBody[MDUSERDLL_MAXMSGBODY_LEN+1];
  341.     char BodyFilePath[MAX_PATH+1];
  342.  
  343.     char AttachmentFilePath[MAX_PATH+1];
  344.     bool RemoveAttachment;
  345.  
  346.     int Priority;
  347. };
  348.  
  349. #define MDUSERDLL_ISEQUALTO       1
  350. #define MDUSERDLL_ISNOTEQUALTO    2
  351. #define MDUSERDLL_CONTAINS        3   
  352. #define MDUSERDLL_DOESNOTCONTAIN  4 
  353.  
  354. struct MD_Rule
  355. {
  356.     char Header[HEADER_LEN+1];
  357.     char MatchText[MATCHTEXT_LEN+1];
  358.     char Folder[MAX_PATH+1];
  359.     int  Relation;
  360. };
  361.  
  362. #ifdef __BORLANDC__
  363.     #pragma option -a.
  364. #else
  365.    #pragma pack(pop)
  366. #endif
  367.  
  368. #ifndef MDUSER_DLL
  369.  
  370. extern bool MDUserDllLoaded;
  371. extern HINSTANCE hMDUSER;
  372.  
  373. bool    LoadMDUserDll(char* MDUserDll = NULL, bool LoadUsers = true, bool IgnoreFail = false);
  374. bool    LoadMDUserDll(int&, char* MDUserDll = NULL, bool LoadUsers = true, bool IgnoreFail = false);
  375. void    FreeMDUserDll();
  376.  
  377. typedef void        (_stdcall *MD_FlagReloadUsersP)();
  378. typedef void        (_stdcall *MD_InitMessageInfoP)(MD_MessageInfo*);
  379. typedef MD_UserInfo*    (_stdcall *MD_GetSharedUserInfoP)();
  380. typedef int         (_stdcall *MD_VerifyMessageInfoP)(MD_MessageInfo*);
  381. typedef int         (_stdcall *MD_SpoolMessageP)(MD_MessageInfo*);
  382. typedef void        (_stdcall *MD_GetDomainNamesP)(char*, int);
  383. typedef int         (_stdcall *MD_GetDomainCountP)();
  384. typedef char*        (_stdcall *MD_GetDomainNameUsingIPP)(const char*, char*, int);
  385. typedef char*        (_stdcall *MD_FilterStringP)(char*, int, MD_UserInfo*);
  386. typedef void        (_stdcall *MD_FilterUserInfoP)(MD_UserInfo*);
  387. typedef bool        (_stdcall *MD_RegisterWindowP)(HWND);
  388. typedef bool        (_stdcall *MD_UnregisterWindowP)(HWND);
  389. typedef void        (_stdcall *MD_ReloadUsersP)();
  390. typedef char*        (_stdcall *MD_GetAppDirP)(const char*, int);
  391. typedef void        (_stdcall *MD_SetIsMDConfigP)(bool);
  392. typedef bool        (_stdcall *MD_GetDBPathP)(char*, int);
  393. typedef void        (_stdcall *MD_InitUserInfoP)(MD_UserInfo*);
  394. typedef int         (_stdcall *MD_AddUserP)(MD_UserInfo*, int);
  395. typedef void        (_stdcall *MD_ChangeUserP)(MD_UserInfo*, char*, bool);
  396. typedef bool        (_stdcall *MD_DeleteUserP)(char*, int);
  397. typedef int         (_stdcall *MD_VerifyUserInfoP)(MD_UserInfo*, int);
  398. typedef int         (_stdcall *MD_UserCountP)();
  399. typedef bool        (_stdcall *MD_IsProVersionP)();
  400. typedef MD_FINDHANDLE    (_stdcall *MD_FindFirstP)(MD_HANDLE*);
  401. typedef bool        (_stdcall *MD_FindNextP)(MD_FINDHANDLE, MD_HANDLE*);
  402. typedef void        (_stdcall *MD_FindCloseP)(MD_FINDHANDLE);
  403. typedef MD_RULEHANDLE    (_stdcall *MD_FindFirstRuleP)(MD_HANDLE, MD_Rule*);
  404. typedef bool        (_stdcall *MD_FindNextRuleP)(MD_HANDLE, MD_RULEHANDLE*, MD_Rule*);
  405. typedef bool        (_stdcall *MD_GetEditIMAPRulesP)(MD_HANDLE);
  406. typedef void        (_stdcall *MD_SetEditIMAPRulesP)(MD_HANDLE, bool);
  407. typedef bool        (_stdcall *MD_ReadRuleP)(MD_HANDLE, int, MD_Rule*);
  408. typedef bool        (_stdcall *MD_MoveRuleUpP)(MD_HANDLE, MD_RULEHANDLE);
  409. typedef bool        (_stdcall *MD_MoveRuleDownP)(MD_HANDLE, MD_RULEHANDLE);
  410. typedef bool        (_stdcall *MD_RuleStructToRuleStringP)(MD_Rule*, char*, int);
  411. typedef bool        (_stdcall *MD_RuleStringToRuleStructP)(char*, MD_Rule*);
  412. typedef bool        (_stdcall *MD_DeleteRuleP)(MD_HANDLE, MD_RULEHANDLE);
  413. typedef bool        (_stdcall *MD_AddRuleP)(MD_HANDLE, MD_Rule*);
  414. typedef bool        (_stdcall *MD_ChangeRuleP)(MD_HANDLE, MD_RULEHANDLE, MD_Rule*);
  415. typedef bool        (_stdcall *MD_GetIMAPFoldersP)(MD_HANDLE, char*, int);
  416. typedef bool        (_stdcall *MD_CreateIMAPFolderP)(MD_HANDLE, char*, char*);
  417. typedef bool        (_stdcall *MD_ValidateUserP)(MD_HANDLE, const char*);
  418. typedef bool        (_stdcall *MD_LogonUserP)(char*, const char*, const char*);
  419. typedef MD_HANDLE    (_stdcall *MD_GetByAliasP)(char*, const char*);
  420. typedef MD_UserInfo* (_stdcall *MD_GetUserInfoP)(MD_HANDLE, MD_UserInfo*);
  421. typedef bool        (_stdcall *MD_SetUserInfoP)(MD_HANDLE, MD_UserInfo*);
  422. typedef bool        (_stdcall *MD_UserExistsP)(const char *address);
  423. typedef MD_HANDLE    (_stdcall *MD_GetByEmailP)(const char*);
  424. typedef MD_HANDLE    (_stdcall *MD_GetByFullNameP)(const char*, const char*);
  425. typedef MD_HANDLE    (_stdcall *MD_GetByMailboxP)(const char*, const char*);
  426. typedef MD_HANDLE    (_stdcall *MD_GetByMailDirP)(const char*, const char*);
  427. typedef void        (_stdcall *MD_GetFreeP)(MD_HANDLE);
  428. typedef char*        (_stdcall *MD_GetEmailP)(MD_HANDLE, char*);
  429. typedef char*        (_stdcall *MD_GetMailboxP)(MD_HANDLE, char*);
  430. typedef void        (_stdcall *MD_SetMailboxP)(MD_HANDLE, const char*);
  431. typedef char*        (_stdcall *MD_GetDomainP)(MD_HANDLE, char*);
  432. typedef void        (_stdcall *MD_SetDomainP)(MD_HANDLE, const char*);
  433. typedef char*        (_stdcall *MD_GetFullNameP)(MD_HANDLE, char*);
  434. typedef void        (_stdcall *MD_SetFullNameP)(MD_HANDLE, const char*);
  435. typedef char*        (_stdcall *MD_GetMailDirP)(MD_HANDLE, char*);
  436. typedef void        (_stdcall *MD_SetMailDirP)(MD_HANDLE, const char*);
  437. typedef char*        (_stdcall *MD_GetPasswordP)(MD_HANDLE, char*);
  438. typedef void        (_stdcall *MD_SetPasswordP)(MD_HANDLE, const char*);
  439. typedef bool        (_stdcall *MD_GetAutoDecodeP)(MD_HANDLE);
  440. typedef void        (_stdcall *MD_SetAutoDecodeP)(MD_HANDLE, bool);
  441. typedef bool        (_stdcall *MD_GetIsForwardingP)(MD_HANDLE);
  442. typedef void        (_stdcall *MD_SetIsForwardingP)(MD_HANDLE, bool);
  443. typedef bool        (_stdcall *MD_GetAllowAccessP)(MD_HANDLE);
  444. typedef void        (_stdcall *MD_SetAllowAccessP)(MD_HANDLE, bool);
  445. typedef bool        (_stdcall *MD_GetAllowChangeViaEmailP)(MD_HANDLE);
  446. typedef void        (_stdcall *MD_SetAllowChangeViaEmailP)(MD_HANDLE, bool);
  447. typedef bool        (_stdcall *MD_GetKeepForwardedMailP)(MD_HANDLE);
  448. typedef void        (_stdcall *MD_SetKeepForwardedMailP)(MD_HANDLE, bool);
  449. typedef bool        (_stdcall *MD_GetHideFromEveryoneP)(MD_HANDLE);
  450. typedef void        (_stdcall *MD_SetHideFromEveryoneP)(MD_HANDLE, bool);
  451. typedef bool        (_stdcall *MD_GetEncryptMailP)(MD_HANDLE);
  452. typedef void        (_stdcall *MD_SetEncryptMailP)(MD_HANDLE, bool);
  453. typedef bool        (_stdcall *MD_GetApplyQuotasP)(MD_HANDLE);
  454. typedef void        (_stdcall *MD_SetApplyQuotasP)(MD_HANDLE, bool);
  455. typedef bool        (_stdcall *MD_GetEnableMultiPOPP)(MD_HANDLE);
  456. typedef void        (_stdcall *MD_SetEnableMultiPOPP)(MD_HANDLE, bool);
  457. typedef bool        (_stdcall *MD_GetLocalOnlyP)(MD_HANDLE);
  458. typedef void        (_stdcall *MD_SetLocalOnlyP)(MD_HANDLE, bool);
  459. typedef long        (_stdcall *MD_GetMaxMessageCountP)(MD_HANDLE);
  460. typedef void        (_stdcall *MD_SetMaxMessageCountP)(MD_HANDLE, long);
  461. typedef long        (_stdcall *MD_GetMaxDiskSpaceP)(MD_HANDLE);
  462. typedef void        (_stdcall *MD_SetMaxDiskSpaceP)(MD_HANDLE, long);
  463. typedef void        (_stdcall *MD_GetForwardingInfoP)(MD_HANDLE, char*, char*, char*, char*);
  464. typedef bool        (_stdcall *MD_SetForwardingInfoP)(MD_HANDLE, const char*, const char*, const char*, const char*);
  465. typedef void        (_stdcall *MD_GetAutoRespInfoP)(MD_HANDLE, char*, char*, char*, char*, char*, bool&);
  466. typedef bool        (_stdcall *MD_SetAutoRespInfoP)(MD_HANDLE, const char*, const char*, const char*, const char*, const char*, bool);
  467. typedef bool        (_stdcall *MD_EraseAutoRespP)(MD_HANDLE);
  468. typedef void        (_stdcall *MD_UpdateAutoRespDomainsP)(const char*, const char*);
  469. typedef char*        (_stdcall *MD_GetMailFormatP)(MD_HANDLE, char*);
  470. typedef char*        (_stdcall *MD_SetMailFormatP)(MD_HANDLE, const char*);
  471. typedef char*        (_stdcall *MD_GetSignatureFileP)(MD_HANDLE, char*);
  472. typedef char*        (_stdcall *MD_SetSignatureFileP)(MD_HANDLE, const char*);
  473. typedef long        (_stdcall *MD_GetFileCountP)(MD_HANDLE);
  474. typedef long        (_stdcall *MD_GetDirSizeP)(MD_HANDLE);
  475. typedef bool        (_stdcall *MD_GetWebConfigBitP)(MD_HANDLE, int);
  476. typedef int         (_stdcall *MD_GetWebConfigBitsP)(MD_HANDLE);
  477. typedef void        (_stdcall *MD_SetWebConfigBitP)(MD_HANDLE, int, bool);
  478. typedef void        (_stdcall *MD_SetWebConfigBitsP)(MD_HANDLE, int);
  479. typedef bool        (_stdcall *MD_IsDynamicPasswordStrP)(char*);
  480. typedef long        (_stdcall *MD_GetMaxUIDLCountP)(MD_HANDLE);
  481. typedef void        (_stdcall *MD_SetMaxUIDLCountP)(MD_HANDLE, long);
  482. typedef long        (_stdcall *MD_GetMaxMessageSizeP)(MD_HANDLE);
  483. typedef void        (_stdcall *MD_SetMaxMessageSizeP)(MD_HANDLE, long);
  484. typedef int         (_stdcall *MD_AddToLdapAddrBookP)(MD_UserInfo*);
  485.  
  486. extern  MD_FlagReloadUsersP            MD_FlagReloadUsers;
  487. extern    MD_InitMessageInfoP         MD_InitMessageInfo;
  488. extern    MD_GetSharedUserInfoP        MD_GetSharedUserInfo;
  489. extern    MD_VerifyMessageInfoP        MD_VerifyMessageInfo;
  490. extern    MD_SpoolMessageP            MD_SpoolMessage;
  491. extern    MD_GetDomainNamesP            MD_GetDomainNames;
  492. extern    MD_GetDomainCountP            MD_GetDomainCount;
  493. extern    MD_GetDomainNameUsingIPP    MD_GetDomainNameUsingIP;
  494. extern    MD_FilterStringP            MD_FilterString;
  495. extern    MD_FilterUserInfoP            MD_FilterUserInfo;
  496. extern    MD_ReloadUsersP             MD_ReloadUsers;
  497. extern    MD_RegisterWindowP            MD_RegisterWindow;
  498. extern    MD_UnregisterWindowP        MD_UnregisterWindow;
  499. extern    MD_InitUserInfoP            MD_InitUserInfo;
  500. extern    MD_AddUserP                 MD_AddUser;
  501. extern    MD_ChangeUserP                MD_ChangeUser;
  502. extern    MD_DeleteUserP                MD_DeleteUser;
  503. extern    MD_VerifyUserInfoP            MD_VerifyUserInfo;
  504. extern    MD_GetAppDirP                MD_GetAppDir;
  505. extern    MD_SetIsMDConfigP            MD_SetIsMDConfig;
  506. extern    MD_GetDBPathP                MD_GetDBPath;
  507. extern    MD_UserCountP                MD_UserCount;
  508. extern    MD_IsProVersionP            MD_IsProVersion;
  509. extern    MD_FindFirstP                MD_FindFirst;
  510. extern    MD_FindNextP                MD_FindNext;
  511. extern    MD_FindCloseP                MD_FindClose;
  512. extern    MD_FindFirstRuleP            MD_FindFirstRule;
  513. extern    MD_FindNextRuleP            MD_FindNextRule;
  514. extern  MD_GetEditIMAPRulesP        MD_GetEditIMAPRules;
  515. extern  MD_SetEditIMAPRulesP        MD_SetEditIMAPRules;
  516. extern  MD_ReadRuleP                MD_ReadRule;
  517. extern    MD_MoveRuleUpP                MD_MoveRuleUp;
  518. extern    MD_MoveRuleDownP            MD_MoveRuleDown;
  519. extern  MD_RuleStringToRuleStructP  MD_RuleStringToRuleStruct;
  520. extern  MD_RuleStructToRuleStringP    MD_RuleStructToRuleString;
  521. extern    MD_AddRuleP                    MD_AddRule;
  522. extern    MD_DeleteRuleP                MD_DeleteRule;
  523. extern    MD_ChangeRuleP                MD_ChangeRule;
  524. extern    MD_GetIMAPFoldersP            MD_GetIMAPFolders;
  525. extern  MD_CreateIMAPFolderP        MD_CreateIMAPFolder;
  526. extern    MD_ValidateUserP            MD_ValidateUser;
  527. extern    MD_LogonUserP                MD_LogonUser;
  528. extern    MD_GetByAliasP                MD_GetByAlias;
  529. extern    MD_UserExistsP                MD_UserExists;
  530. extern    MD_GetByEmailP                MD_GetByEmail;
  531. extern    MD_GetByFullNameP            MD_GetByFullName;
  532. extern    MD_GetByMailboxP            MD_GetByMailbox;
  533. extern    MD_GetByMailDirP            MD_GetByMailDir;
  534. extern    MD_GetFreeP                 MD_GetFree;
  535. extern    MD_GetUserInfoP             MD_GetUserInfo;
  536. extern    MD_SetUserInfoP             MD_SetUserInfo;
  537. extern    MD_GetEmailP                MD_GetEmail;
  538. extern    MD_GetMailboxP                MD_GetMailbox;
  539. extern    MD_SetMailboxP                MD_SetMailbox;
  540. extern    MD_GetDomainP                MD_GetDomain;
  541. extern    MD_SetDomainP                MD_SetDomain;
  542. extern    MD_GetFullNameP             MD_GetFullName;
  543. extern    MD_SetFullNameP             MD_SetFullName;
  544. extern    MD_GetMailDirP                MD_GetMailDir;
  545. extern    MD_SetMailDirP                MD_SetMailDir;
  546. extern    MD_GetPasswordP             MD_GetPassword;
  547. extern    MD_SetPasswordP             MD_SetPassword;
  548. extern    MD_GetAutoDecodeP            MD_GetAutoDecode;
  549. extern    MD_SetAutoDecodeP            MD_SetAutoDecode;
  550. extern    MD_GetIsForwardingP         MD_GetIsForwarding;
  551. extern    MD_SetIsForwardingP         MD_SetIsForwarding;
  552. extern    MD_GetAllowAccessP            MD_GetAllowAccess;
  553. extern    MD_SetAllowAccessP            MD_SetAllowAccess;
  554. extern    MD_GetAllowChangeViaEmailP    MD_GetAllowChangeViaEmail;
  555. extern    MD_SetAllowChangeViaEmailP    MD_SetAllowChangeViaEmail;
  556. extern    MD_GetKeepForwardedMailP    MD_GetKeepForwardedMail;
  557. extern    MD_SetKeepForwardedMailP    MD_SetKeepForwardedMail;
  558. extern    MD_GetHideFromEveryoneP     MD_GetHideFromEveryone;
  559. extern    MD_SetHideFromEveryoneP     MD_SetHideFromEveryone;
  560. extern    MD_GetEncryptMailP            MD_GetEncryptMail;
  561. extern    MD_SetEncryptMailP            MD_SetEncryptMail;
  562. extern    MD_GetApplyQuotasP            MD_GetApplyQuotas;
  563. extern    MD_SetApplyQuotasP            MD_SetApplyQuotas;
  564. extern    MD_GetEnableMultiPOPP        MD_GetEnableMultiPOP;
  565. extern    MD_SetEnableMultiPOPP        MD_SetEnableMultiPOP;
  566. extern    MD_GetLocalOnlyP            MD_GetLocalOnly;
  567. extern    MD_SetLocalOnlyP            MD_SetLocalOnly;
  568. extern    MD_GetMaxMessageCountP        MD_GetMaxMessageCount;
  569. extern    MD_SetMaxMessageCountP        MD_SetMaxMessageCount;
  570. extern    MD_GetMaxDiskSpaceP         MD_GetMaxDiskSpace;
  571. extern    MD_SetMaxDiskSpaceP         MD_SetMaxDiskSpace;
  572. extern    MD_GetForwardingInfoP        MD_GetForwardingInfo;
  573. extern    MD_SetForwardingInfoP        MD_SetForwardingInfo;
  574. extern    MD_GetAutoRespInfoP          MD_GetAutoRespInfo;
  575. extern    MD_SetAutoRespInfoP         MD_SetAutoRespInfo;
  576. extern    MD_EraseAutoRespP            MD_EraseAutoResp;
  577. extern  MD_UpdateAutoRespDomainsP    MD_UpdateAutoRespDomains;
  578. extern    MD_GetMailFormatP            MD_GetMailFormat;
  579. extern    MD_SetMailFormatP            MD_SetMailFormat;
  580. extern    MD_GetSignatureFileP        MD_GetSignatureFile;
  581. extern    MD_SetSignatureFileP        MD_SetSignatureFile;
  582. extern    MD_GetFileCountP            MD_GetFileCount;
  583. extern    MD_GetDirSizeP                MD_GetDirSize;
  584. extern    MD_GetWebConfigBitP         MD_GetWebConfigBit;
  585. extern    MD_GetWebConfigBitsP        MD_GetWebConfigBits;
  586. extern    MD_SetWebConfigBitP         MD_SetWebConfigBit;
  587. extern    MD_SetWebConfigBitsP        MD_SetWebConfigBits;
  588. extern    MD_IsDynamicPasswordStrP    MD_IsDynamicPasswordStr;
  589. extern    MD_GetMaxUIDLCountP         MD_GetMaxUIDLCount;
  590. extern    MD_SetMaxUIDLCountP         MD_SetMaxUIDLCount;
  591. extern    MD_GetMaxMessageSizeP        MD_GetMaxMessageSize;
  592. extern    MD_SetMaxMessageSizeP        MD_SetMaxMessageSize;
  593. extern    MD_AddToLdapAddrBookP        MD_AddToLdapAddrBook;
  594.  
  595.  
  596. #endif    // !MDUSER_DLL
  597.  
  598. #endif    // !__RESOURCE__
  599.  
  600. #endif
  601.